<?php

require_once 'Mobitv/Admin/Action.php';

class DetailAction extends Mobitv_Admin_Action {

    public function execute() {
        //$this->checkPermission();
        $method = $_SERVER['REQUEST_METHOD'];
        $userDao = Vega_Dao::factory('Mobitv_Admin_Admin');
        $this->updateLoginStatus();
        if ($method == 'GET') {
            $user = $userDao->getDetail($_SESSION['userid']);
            $user['password'] = '';
            $this->_view->assign('user', $user);
        } elseif ($method == 'POST') {
            $rules = array(
                'fullname' => 'required|max_length:255',
                'email' => 'required|valid_email',
                'repassword' => 'call_confirmPassword',
            );
            $this->buildValidator($rules);

            $langError = array(
                'fullname' => array(
                    'required' => 'Bạn phải nhập vào tên đầy đủ',
                    'max_length' => 'Tên đầy đủ không được quá %val% ký tự'
                ),
                'email' => array(
                    'required' => 'Bạn phải nhập vào email',
                    'valid_email' => 'Email không hợp lệ'
                ),
                'repassword' => array(
                    'confirmPassword' => 'Mật khẩu nhập lại không khớp',
                )
            );

            $this->_validator->setErrorMessages($langError);
            if (!$this->_validator->execute()) {
                $this->_view->assign('error', $this->_validator->getErrorMessages());
                $_SESSION['msg'] = 'Có lỗi xảy ra!';
                $this->_view->assign('user', $_POST);
                return;
            }
            $data = array(
                'email' => $_POST['email'],
                'fullname' => $_POST['fullname'],
                'password' => $_POST['password'],
                'repassword' => $_POST['repassword'],
            );
            if($this->checkPermission()){
                $userDao->updateDetail($data, $_SESSION['userid']);
                $this->gotoUrl('/admin/detail', 'Đã cập nhật');
            }else{
                $this->gotoUrl('/admin/detail', 'Bạn không có quyền cập nhật');
            }
        }
    }

    public function confirmPassword() {
        $password = strval($_POST['password']);
        $repassword = strval($_POST['repassword']);

        if (strlen($password) > 0
                && ($password !== $repassword))
            return false;
        else
            return true;
    }

    public function checkPermission() {
        $userDao = Vega_Dao::factory('Mobitv_Admin_Admin');
        $userId = $_SESSION['userid'];
        $perm = $userDao->getPermission($userId, $this->_actionId);

        $perm['group_permission'] = is_null($perm['group_permission']) ? 0 : $perm['group_permission'];
        $allow = is_null($perm['user_permission']) ? $perm['group_permission'] : $perm['user_permission'];
        if (!$allow){
            return FALSE;
        }else{
            return TRUE;
        }
    }

}

